#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"

const ll mod=998244353;

ll pow(ll a,ll b){
    ll cnt=1;
    while(b){
        if(b&1)cnt=(cnt*a)%mod;
        b>>=1;
        a=(a*a)%mod;
    }
    return cnt;
}

ll inv(ll a){
    return pow(a,mod-2);
}

void solve(){
    int n;
    cin>>n;
    vector<ll>a(n+5);
    multiset<ll>b;
    multiset<ll>c;
    ll gailv=1;
    for(int i=0;i<2*n;i++){
        int num;
        cin>>num;
        if(num==-1){
            if(c.size()==0){
                ll fenmu=inv(b.size());
                gailv*=(((a[*b.begin()])%mod)*fenmu)%mod;
                gailv%=mod;
                c.insert(*b.begin());
                a[*b.begin()]--;
                b.erase(b.begin());
                continue;
            }
            auto it=c.end();
            it--;
            if(*b.begin()<*it&&c.size()>0){
                gailv=0;
                break;
            }
            else {
                ll fenmu=inv(b.size());
                gailv*=(((a[*b.begin()])%mod)*fenmu)%mod;
                gailv%=mod;
                c.insert(*b.begin());
                a[*b.begin()]--;
                b.erase(b.begin());
                continue;
            }
        }
        else {
            b.insert(num);
            a[num]++;
        }
    }
    cout<<gailv;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int _=1;
    //cin>>_;
    while(_--){
        solve();
    }
    return 0;
}